﻿//using System.Windows;

//namespace SilverlightClientEditor.Controller
//{
//    using System.Collections.Generic;
//    using GameEngine.Clients.Silverlight.View;
//    using GameEngine.Clients.Silverlight.View.Components;
//    using GameEngine.Model;
//    using GameEngine.Model.Data;
//    using GameEngine.View;
//    using PureMVC.Interfaces;
//    using PureMVC.Patterns;

//    public class EditorStartupCommand : SimpleCommand
//    {
//        Point TileSize = new Point(10, 10);
//        float MaxHeight = 100;

//        //private IWorldDataProxy<int> CreateLevelWorld() {
//        //    //
//        //    //World Editor Map
//        //    //
            
//        //    IMapVO map = MapDataProxy<MapVO, TileVO, int>.CreateMap(
//        //                new Point(10, 10),
//        //                TileSize,
//        //                MaxHeight,
//        //                new CameraVO() { Position = new Point(5, 5) }
//        //            );

//        //    IMapDataProxy MapProxy = new MapDataProxy<MapVO, TileVO, int>("mapDataProxy", map, TileSize, MaxHeight);
//        //    SilverlightFacade.Instance.RegisterProxy(MapProxy);

//        //    IWorldDataProxy<int> worldProxy = new WorldDataProxy<MapVO, TileVO, int>(
//        //        "worldDataPRoxy",
//        //        new WorldVO<int>()
//        //        {
//        //            MaxHeight = MaxHeight,
//        //            MinHeight = -1,
//        //            TileHeightUnit = 0.1f,
//        //            TileSize = TileSize,
//        //            ThingViewShapeTypes = new List<IThingViewShapeType>() { 
//        //                new ThingViewShapeType("Cube"),
//        //                new ThingViewShapeType("Triangle"),
//        //                new ThingViewShapeType("Elipse"),
//        //                new ThingViewShapeType("Image")
//        //            },
//        //            Map = map
//        //        }
//        //    )
//        //    {
//        //        Map = MapProxy
//        //    };
//        //    //SilverlightFacade.Instance.RegisterProxy(worldProxy);
//        //    return worldProxy;
//        //}

//        public override void Execute(INotification notification)
//        {
//            //IWorldDataProxy<int> levelEditWorld = CreateLevelWorld();
//            //SilverlightModelFacade.Instance.AddWorld("levelEdit", levelEditWorld);

//            ////
//            ////World Editor Menus
//            ////
//            //WorldEditorMenuMediator<WorldEditorMenuUC> worldEditorMenuMediator = new WorldEditorMenuMediator<WorldEditorMenuUC>(
//            //    "worldEditorMenuMediator",
//            //    new WorldEditorMenuUC());
//            //SilverlightFacade.Instance.RegisterMediator(worldEditorMenuMediator);

//            //TerrainMenuUC terrainMenu = new TerrainMenuUC();
//            //TileMapEditorMenuMediator<TerrainMenuUC, TerrainMenuUC> tileMapEditorMenuMediator = new TileMapEditorMenuMediator<TerrainMenuUC, TerrainMenuUC>(
//            //    "terrainEditorMenuMediator",
//            //    terrainMenu, terrainMenu);
//            //SilverlightFacade.Instance.RegisterMediator(tileMapEditorMenuMediator);

//            ////
//            ////Item Creator
//            ////
//            //IMapVO itemViewerMap = MapDataProxy<MapVO, TileVO, int>.CreateMap(
//            //            new Point(1, 1),
//            //            TileSize,
//            //            MaxHeight,
//            //            new CameraVO() { Position = new Point(0, 0) }
//            //        );
//            //IMapDataProxy itemViewerMapProxy = new MapDataProxy<MapVO, TileVO,int>(
//            //    "itemViewerMapDataProxy",
//            //    itemViewerMap, 
//            //    TileSize, 
//            //    MaxHeight) { Scale = 0.5f };
//            //SilverlightFacade.Instance.RegisterProxy(itemViewerMapProxy);

//            //IMapVO itemEditorMap = MapDataProxy<MapVO, TileVO, int>.CreateMap(
//            //            new Point(5, 5),
//            //            TileSize,
//            //            MaxHeight,
//            //            new CameraVO() { Position = new Point(2, 2) }
//            //        );
//            //IMapDataProxy itemEditorMapProxy = new MapDataProxy<MapVO, TileVO, int>(
//            //    "itemEditorMapDataProxy",
//            //    itemEditorMap,
//            //    TileSize,
//            //    MaxHeight) { Scale = 1 };
//            //SilverlightFacade.Instance.RegisterProxy(itemEditorMapProxy);

//            ///*SilverlightMapMediator itemMapMed = new SilverlightMapMediator(
//            //    worldProxy,
//            //    SilverlightViewFacade.Instance.CreateMapView(itemMapProxy));
//            //SilverlightFacade.Instance.RegisterMediator(itemMapMed);

//            //*/
//            //IWorldDataProxy<int> itemViewerWorldProxy = new WorldDataProxy<MapVO, TileVO, int>(
//            //    "itemViewerWorldDataPRoxy",
//            //    new WorldVO<int>()
//            //    {
//            //        MaxHeight = MaxHeight,
//            //        MinHeight = -1,
//            //        TileHeightUnit = 0.1f,
//            //        TileSize = TileSize,
//            //        ThingViewShapeTypes = new List<IThingViewShapeType>() { 
//            //            new ThingViewShapeType("Cube"),
//            //            new ThingViewShapeType("Triangle"),
//            //            new ThingViewShapeType("Elipse"),
//            //            new ThingViewShapeType("Image")
//            //        },
//            //        Map = itemViewerMap
//            //    }
//            //)
//            //{
//            //    Map = itemViewerMapProxy
//            //};
//            //IWorldDataProxy<int> itemEditorWorldProxy = new WorldDataProxy<MapVO, TileVO, int>(
//            //    "itemEditorWorldDataPRoxy",
//            //    new WorldVO<int>()
//            //    {
//            //        MaxHeight = MaxHeight,
//            //        MinHeight = -1,
//            //        TileHeightUnit = 0.1f,
//            //        TileSize = TileSize,
//            //        ThingViewShapeTypes = new List<IThingViewShapeType>() { 
//            //            new ThingViewShapeType("Cube"),
//            //            new ThingViewShapeType("Triangle"),
//            //            new ThingViewShapeType("Elipse"),
//            //            new ThingViewShapeType("Image")
//            //        },
//            //        Map = itemEditorMap
//            //    }
//            //)
//            //{
//            //    Map = itemEditorMapProxy
//            //};
//            ////SilverlightFacade.Instance.RegisterProxy(worldProxy);

//            //SilverlightModelFacade.Instance.AddWorld("itemTypeViewer", itemViewerWorldProxy);
//            //SilverlightModelFacade.Instance.AddWorld("itemTypeEdit", itemEditorWorldProxy);



//            //ItemEditorMediator<ItemEditorUC, ItemUC, MapUC, WorldUC, int, FrameworkElement> itemEditorMediator = new ItemEditorMediator<ItemEditorUC, ItemUC, MapUC, WorldUC, int, FrameworkElement>(
//            //    "itemEditorMediator",
//            //    new ItemEditorUC(),
//            //    itemEditorWorldProxy,
//            //    SilverlightFacade.Instance.RetrieveMediator(SilverlightWorldMediator.GetMediatorNameFromProxy(itemEditorWorldProxy)) as SilverlightWorldMediator,
//            //    SilverlightFacade.Instance.RetrieveMediator(SilverlightWorldMediator.GetMediatorNameFromProxy(itemViewerWorldProxy)) as SilverlightWorldMediator);
//            //SilverlightFacade.Instance.RegisterMediator(itemEditorMediator);
            
//            //GameEditorScreenUC editor = new GameEditorScreenUC();
//            //SilverlightWorldEditorMediator med = new SilverlightWorldEditorMediator(
//            //    "levelEditorMediator",
//            //    levelEditWorld,
//            //    SilverlightFacade.Instance.RetrieveMediator(SilverlightWorldMediator.GetMediatorNameFromProxy(levelEditWorld)) as SilverlightWorldMediator,
//            //    worldEditorMenuMediator,
//            //    tileMapEditorMenuMediator,
//            //    itemEditorMediator,
//            //    editor);
//            //SilverlightFacade.Instance.RegisterMediator(med);

//            ////SendNotification(AppMediator.SET_ROOTVISUAL_NOTIFICATION, editor);
//            //SendNotification(DesktopMediator.SET_SCREEN, editor);
//        }
//    }
//}
